package com.guet;

// 导入 FreeTTS 库中的类
import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

// 定义一个名为 TextToSpeech 的公共类
public class TextToSpeech {
    // 定义一个静态常量字符串 VOICE_NAME，用于指定语音名称
    private static final String VOICE_NAME = "kevin16";
    // 声明一个 Voice 类型的变量 voice，用于存储语音对象
    private Voice voice;

    // 定义 TextToSpeech 类的构造方法
    public TextToSpeech() {
        // 设置系统属性，指定语音库的位置
        System.setProperty("freetts.voices",
                "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
        // 获取指定名称的语音对象
        voice = VoiceManager.getInstance().getVoice(VOICE_NAME);

        // 如果语音对象为 null，表示未找到指定名称的语音
        if (voice == null) {
            // 打印错误信息
            System.err.println("Cannot find a voice named " + VOICE_NAME + ". Please specify a different voice.");
            // 结束方法
            return;
        }

        // 分配语音资源
        voice.allocate();
    }

    // 定义一个 speak 方法，用于让语音对象说出指定的文本
    public void speak(String text) {
        // 如果语音对象不为 null，则调用其 speak 方法说出文本
        if (voice != null) {
            voice.speak(text);
        }
    }

    // 定义一个 deallocate 方法，用于释放语音资源
    public void deallocate() {
        // 如果语音对象不为 null，则调用其 deallocate 方法释放资源
        if (voice != null) {
            voice.deallocate();
        }
    }
}
